home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 PPC / Demo / www / helplib.py < prev    next >
Text File  |  1996-05-19  |  2KB  |  82 lines

  1. import os
  2. import time
  3. import string
  4. import socket
  5. import select
  6.  
  7. error = 'helplib.error' # Exception
  8.  
  9. HELP_PORT = 4000
  10. HELP_SERVER = '/ufs/guido/bin/wwww -s &'
  11. STARTUP_DELAY = 5
  12. PING_TIMEOUT = 5
  13.  
  14. help_wname = None
  15. help_host = None
  16. help_port = None
  17.  
  18. def init(wname):
  19.     global help_wname, help_host, help_port
  20.     help_wname = wname
  21.     help_port = HELP_PORT
  22.     #
  23.     if os.environ.has_key('DISPLAY'):
  24.         display = os.environ['DISPLAY']
  25.     else:
  26.         display = ':0'
  27.     #
  28.     if ':' in display:
  29.         i = string.index(display, ':')
  30.     else:
  31.         i = len(display)
  32.     #
  33.     thishost = socket.gethostname()
  34.     #
  35.     help_host = display[:i]
  36.     if help_host == 'unix' or help_host == '':
  37.         help_host = thishost
  38.     #
  39.     if not ping():
  40.         if socket.gethostbyname(help_host) <> \
  41.               socket.gethostbyname(thishost):
  42.             raise error, 'Won\'t start remote help server'
  43.         print 'helplib.init: Starting help server...'
  44.         sts = os.system(HELP_SERVER)
  45.         if sts: raise error, \
  46.                 'Exit status ' + `sts` + ' from help server'
  47.         time.sleep(STARTUP_DELAY)
  48.  
  49.  
  50. def ping():
  51.     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  52.     msg = help_wname + ' echo'
  53.     s.sendto(msg, (help_host, help_port))
  54.     result = select.select([s], [], [], PING_TIMEOUT)
  55.     if not result:
  56.         print 'helplib.ping: No select result'
  57.         return 0
  58.     rlist, wlist, xlist = result
  59.     if s in rlist:
  60.         try:
  61.             data = s.recv(100)
  62.         except socket.error, msg:
  63.             print 'helplib.ping: Socket error:', msg
  64.             return 0
  65.         print 'helplib.ping: Echo data:', `data`
  66.         return 1
  67.     print 'helplib.ping: Timeout'
  68.     return 0
  69.  
  70.  
  71. def show(page):
  72.     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  73.     msg = help_wname + ' goto ' + page
  74.     s.sendto(msg, (help_host, help_port))
  75.  
  76.  
  77. def test():
  78.     import sys
  79.     init('1')
  80.     if sys.argv[1:]: show(sys.argv[1])
  81.     else: show('http://voorn.cwi.nl/default.html')
  82.